﻿// Copyright (c) 2006 Antu Corporation。 
// 创建人  ：LinJian
// 创建时间：2007-3-23 10:25:28
using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
using System.Xml;

namespace Antu.Business.Config
{
    /// <!--
    /// 功能描述  : 自定义配置文件中的节点
    /// 创建人  : LinJian
    /// 创建时间: 2007-3-23 10:43:20
    /// 修改人  : 暂无他人修改
    /// 修改时间: 2007-3-23 10:43:22
    /// -->
    public class ConfigurationUserDefine : ConfigurationSection
    {
        /// <summary>
        /// 构造函数
        /// </summary>
        public ConfigurationUserDefine()
        {
        }

        /// <summary>
        /// 构造函数(设置属性值)
        /// </summary>
        /// <param name="strRegionName">主要行政区名</param>
        /// <param name="databaseType">数据库类型(分为ORACLE,DDC,ACCESS三种类型)</param>
        /// <param name="strEncodingPass">加密的密钥</param>
        /// <param name="nEncodingFlag">加密的标志位</param>
        public ConfigurationUserDefine(string strRegionName,DatabaseType databaseType,string strEncodingPass,int nEncodingFlag)
        {
            MainRegionName = strRegionName;
            DatabaseType = databaseType;
            EncodingPass = strEncodingPass;
            EncodingFlag = nEncodingFlag;
        }

        #region 自定义字节属性
        /// <summary>
        /// 自定义字节属性值(主行政区名)
        /// </summary>
        [ConfigurationProperty("MainRegionName", DefaultValue = "成都市", IsRequired = true)]
        [StringValidator(InvalidCharacters = "~!@#$%^&*()[]{}/;'\"|\\", MinLength = 1, MaxLength = 60)]
        public String MainRegionName
        {
            get
            {
                return (String)this["MainRegionName"];
            }
            set
            {
                this["MainRegionName"] = value;
            }
        }

        /// <summary>
        /// 自定义字节属性值(数据库的类型)
        /// </summary>
        [ConfigurationProperty("DatabaseType", DefaultValue = "Oracle", IsRequired = true)]
        public DatabaseType DatabaseType
        {
            get
            {
                //默认值
                DatabaseType dtReturn = DatabaseType.Oracle;

                switch (this["DatabaseType"].ToString().ToUpper())
                {
                    case "DDC":
                        dtReturn = DatabaseType.Ddc;
                        break;
                    case "ACCESS":
                        dtReturn = DatabaseType.Access;
                        break;
                }
                return dtReturn;
            }
            set
            {
                this["DatabaseType"] = value;
            }
        }

        /// <summary>
        /// 自定义字节属性值(加密的密钥)
        /// </summary>
        [ConfigurationProperty("EncodingPass", DefaultValue = "abcdefgh", IsRequired = true)]
        [StringValidator(InvalidCharacters = "~^()[]{}/;'\"|\\", MinLength = 1, MaxLength = 20)]
        public String EncodingPass
        {
            get
            {
                return (String)this["EncodingPass"];
            }
            set
            {
                this["EncodingPass"] = value;
            }
        }

        /// <summary>
        /// 自定义字节属性值(加密的标志)
        /// </summary>
        [ConfigurationProperty("EncodingFlag", DefaultValue = "0", IsRequired = true)]
        public int EncodingFlag
        {
            get
            {
                return (int)this["EncodingFlag"];
            }
            set
            {
                this["EncodingFlag"] = value;
            }
        } 
        #endregion

        #region 自定义节点分类
        /// <summary>
        /// 自定义字节名(系统文件分类)
        /// </summary>
        [ConfigurationProperty("SystemFile")]
        public ChildSectionForSysFile SystemFile
        {
            get
            {
                return (ChildSectionForSysFile)this["SystemFile"];
            }
            set
            {
                this["SystemFile"] = value;
            }
        }

        /// <summary>
        /// 自定义字节名(系统参数分类)
        /// </summary>
        [ConfigurationProperty("SystempParam")]
        public ChildSectionForSysParam SystempParam
        {
            get
            {
                return (ChildSectionForSysParam)this["SystempParam"];
            }
            set
            {
                this["SystempParam"] = value;
            }
        }

        /// <summary>
        /// 自定义字节名(GDO连接分类)
        /// </summary>
        [ConfigurationProperty("GdoConnectionInfo")]
        public ChildSectionForGdo GdoConnectionInfo
        {
            get
            {
                return (ChildSectionForGdo)this["GdoConnectionInfo"];
            }
            set
            {
                this["GdoConnectionInfo"] = value;
            }
        }

        /// <summary>
        /// 自定义字节名(FTP连接分类)
        /// </summary>
        [ConfigurationProperty("FtpConnectionInfo")]
        public ChildSectionForFtp FtpConnectionInfo
        {
            get
            {
                return (ChildSectionForFtp)this["FtpConnectionInfo"];
            }
            set
            {
                this["FtpConnectionInfo"] = value;
            }
        } 
        #endregion
    }

    /// <summary>
    /// 系统使用数据的类型
    /// </summary>
    public enum DatabaseType
    {
        /// <summary>
        /// oracle的连接方式
        /// </summary>
        Oracle = 1,

        /// <summary>
        /// DDC的连接方式
        /// </summary>
        Ddc,

        /// <summary>
        /// access的连接方式
        /// </summary>
        Access
    }
}
